package cn.itsource.file;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;

/**
 *	File:
 *		常用方法：获取子文件夹或者子文件方法
		 * 	1.String[] list()获取当前文件夹下所有的子文件夹或者子文件的名	//文件没有下一级
			2.File[] listFiles() 获取当前文件夹下所有的子文件夹或者子文件对象
		
			===================================有过滤功能===================================
 *			3.String[] list(FilenameFilter filter) 
				获取根据文件名过滤后的文件名
				FilenameFilter：文件名过滤器接口
			4.File[] listFiles(FilenameFilter filter)
				获取根据文件名过滤后的文件对象
				FilenameFilter：文件名过滤器接口
				
			5.File[] listFiles(FileFilter filter)
				获取根据文件过滤后的文件对象
				FileFilter：文件过滤器接口
 */
public class FileTest3 {

	public static void main(String[] args) throws IOException {
		File dir = new File("F:/t1");
		File file = new File("F:/t1/newFile.avi");//文件没有下一级
		
		//3.String[] list(FilenameFilter filter) 获取根据文件名过滤后的文件名 		FilenameFilter：文件名过滤器接口
		String[] list = dir.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				System.out.println("dir=====>"+dir);//dir是指当前文件夹对象
				System.out.println("name:"+name);//name是当前每一次遍历到的子文件夹或者子文件名
				//获取所有当前目录下所有.avi文件
				if (name.endsWith(".avi")) {
					return true;//true表示满足条件
				}
				return false;//true表示不满足条件
			}
		});
		System.out.println(Arrays.toString(list));
		
		System.out.println("==============2==============");
		//4.File[] listFiles(FilenameFilter filter)获取根据文件名过滤后的文件对象		FilenameFilter：文件名过滤器接口
		File[] listFiles = dir.listFiles(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				System.out.println("dir=====>"+dir);//dir是指当前文件夹对象
				System.out.println("name:"+name);//name是当前每一次遍历到的子文件夹或者子文件名
				//获取所有当前目录下所有.avi文件
				if (name.endsWith(".avi")) {
					return true;//true表示满足条件
				}
				return false;//true表示不满足条件
			}
		});
		System.out.println(Arrays.toString(listFiles));
		
		
		System.out.println("=============3===============");
		//5.File[] listFiles(FileFilter filter)获取根据文件过滤后的文件对象	FileFilter：文件过滤器接口
		File[] listFiles2 = dir.listFiles(new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				System.out.println("pathname:" + pathname);//pathname就是每一次遍历获取到的子文件或者文件夹对象
				//获取所有当前目录下所有.avi文件
				if (pathname.getName().endsWith(".avi")) {
					return true;//true表示满足条件
				}
				return false;
			}
		});
		System.out.println(Arrays.toString(listFiles2));
		
		
	}

}
